#ifndef __MOTOR_H__
#define __MOTOR_H__

#include "gpio_init.h"
#include <stdio.h>

char motor_pptr[4][128]; // 存放设备节点的文件地址

static int motor_config(char *pptr, char *num)
{
    int fd, len;
    if (access(pptr, F_OK))
    {
        if (-1 == (fd = open("/sys/class/gpio/export", O_WRONLY)))
        {
            perror("open export error");
            return -1;
        }
        len = strlen(num);
        // printf("%d\n", len);
        if (-1 == write(fd, num, len))
        {
            perror("write export error");
            close(fd);
            return -1;
        }
    }
    if (-1 == gpio_write(pptr, "edge", "none"))
    {
        fprintf(stderr, "config edge error!");
        return -1;
    }
    if (-1 == gpio_write(pptr, "direction", "out"))
    {
        perror("config direction error!");
        close(fd);
        return -1;
    }
    // 默认h输出低电平
    if (-1 == gpio_write(pptr, "value", "0"))
    {
        fprintf(stderr, "config value error!");
        close(fd);
        return -1;
    }
}

static int motor_Fwd()
{
    int i = 0, j = 0;
    while (i < 200)
    {
        for (j = 0; j <= 3; j++)
        {
            gpio_write(motor_pptr[j], "value", "1");
            usleep(10000);
            gpio_write(motor_pptr[j], "value", "0");
        }
        i += 1;
    }
}

static int motor_Rwv()
{
    int i = 0, j;
    while (i < 200)
    {
        for (j = 3; j >= 0; j--)
        {
            gpio_write(motor_pptr[j], "value", "1");
            usleep(10000);
            gpio_write(motor_pptr[j], "value", "0");
        }
        i += 1;
    }
}

static int motor_stop()
{
    int j;
    for (j = 0; j <= 3; j++)
    {
        gpio_write(motor_pptr[j], "value", "0");
    }
}

#endif